#include "complex.h"

#include <iostream>
#include <cmath>
using namespace std;



  Complex::Complex ()
  {
  };

  Complex::Complex (double r)
  {
    re = r;
    im = 0;
  }

  Complex::Complex (double r, double i)
  {
    re = r;
    im = i;
  }

  Complex::Complex (const Complex &c)
  {
    re = c.re;
    im = c.im;
  }

  // деструктор
  Complex::~Complex ()
  {
  }

  // умножение
  Complex Complex::operator* (const Complex &c)
  {
    return Complex(re * c.re - im * c.im, re * c.im + im * c.re);
  }


  // сложение
  Complex Complex::operator+ (const Complex &c)
  {
    return Complex (re + c.re, im + c.im);
  }

  // вычитание
  Complex Complex::operator- (const Complex &c)
  {
    return Complex(re - c.re, im - c.im);
  }


  //  деление
  Complex Complex::operator/ (const Complex &c)
  {
    Complex temp;

    double r = c.re * c.re + c.im * c.im;
    temp.re = (re * c.re + im * c.im) / r;
    temp.im = (im * c.re - re * c.im) / r;

    return temp;
  }

  // модуль комплексного числа
  double Complex::abs ()
  {
    return sqrt (re * re + im * im);
  }
